package com.example.demo4fileinputStream;

import java.io.FileInputStream;
import java.io.InputStream;

/**
 * 目标：掌握 文件字节输入流 读取文件中的字节数组到内存中来
 * public int read()	每次读取一个字节返回，如果发现没有数据可读会返回-1.
 */
public class FileInputStreamDemo1 {
    public static void main(String[] args) throws Exception {
        // 1.创建文件字节输入流管道于源文件接通
        // 使用相对路径
        // InputStream is = new FileInputStream(new File("day12-file-io\\src\\yu02.txt"));
        InputStream is = new FileInputStream("day12-file-io\\src\\yu02.txt"); // 简化写法

        // 2.开始读取文件中的字节并输出
        // 定义一个变量b，用于存储从输入流中读取的字节数据
        int b;
        // 从输入流中连续读取字节数据，直到到达流的末尾
        while ((b = is.read()) != -1) {
            // 将读取的字节数据转换为字符并输出
            System.out.print((char) b);
        }

        // 如果按照这种方式每次读取一个字节，性能比较低，并且如果文件中有汉字，会乱码，因为一个汉字需要三个字节 但是每次只读取一个字节，导致截断。
        is.close();
    }
}
